package org.jsola.contract.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.contract.dto.CompanyContractShowAddDTO;
import org.jsola.contract.dto.CompanyContractShowUpdateDTO;
import org.jsola.contract.query.CompanyContractShowQuery;
import org.jsola.contract.vo.CompanyContractShowListVO;
import org.jsola.contract.vo.CompanyContractShowVO;
import org.jsola.core.Page;
import org.jsola.core.Result;

import java.util.List;

/**
 * 合同员工签署后是否展示
 *
 * @author JanusMix
 */
@Api(tags = "contract-合同员工签署后是否展示")
public interface ICompanyContractShowControllerAPI {

    /**
     * 新增合同员工签署后是否展示
     * @param companyContractShowAddDTO 合同员工签署后是否展示新增实体
     * @return 合同员工签署后是否展示展示对象
     */
    @ApiOperation(value = "新增合同员工签署后是否展示")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyContractShowAddDTO", dataType = "CompanyContractShowAddDTO", value = "新增合同员工签署后是否展示", paramType = "body")
    })
    Result<CompanyContractShowVO> save(CompanyContractShowAddDTO companyContractShowAddDTO);


    /**
     * 修改合同员工签署后是否展示
     * @param companyContractShowUpdateDTO 合同员工签署后是否展示
     * @return 更新数量
     */
    @ApiOperation(value = "修改合同员工签署后是否展示")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyContractShowUpdateDTO", dataType = "CompanyContractShowUpdateDTO", value = "修改合同员工签署后是否展示", paramType = "body")
    })
    Result<Integer> update(CompanyContractShowUpdateDTO companyContractShowUpdateDTO);




    /**
     * 删除单个合同员工签署后是否展示，彻底删除
     * @param companyContractShowId 合同员工签署后是否展示id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个合同员工签署后是否展示，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyContractShowId", dataType = "String", value = "合同员工签署后是否展示id", paramType = "path")
    })
    Result<Integer> delete(String companyContractShowId);


    /**
     * 批量删除合同员工签署后是否展示，彻底删除
     * @param companyContractShowIds 合同员工签署后是否展示id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除合同员工签署后是否展示，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyContractShowIds", dataType = "String[]", value = "合同员工签署后是否展示id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] companyContractShowIds);


    /**
     * 根据合同员工签署后是否展示id查询合同员工签署后是否展示详情
     * @param companyContractShowId 合同员工签署后是否展示id
     * @return 合同员工签署后是否展示详情
     */
    @ApiOperation(value="根据合同员工签署后是否展示id查询合同员工签署后是否展示详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyContractShowId", dataType = "String", value = "合同员工签署后是否展示id", paramType = "path")
    })
    Result<CompanyContractShowVO> findById(String companyContractShowId);


    /**
     * 查询合同员工签署后是否展示
     * @param companyContractShowQuery 合同员工签署后是否展示查询参数
     * @return page
     */
    @ApiOperation(value="查询合同员工签署后是否展示")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyContractShowQuery", dataType = "CompanyContractShowQuery", value = "合同员工签署后是否展示查询参数", paramType = "query")
    })
    Result<List<CompanyContractShowListVO>> listAll(CompanyContractShowQuery companyContractShowQuery);


     /**
     * 分页查询合同员工签署后是否展示
     * @param companyContractShowQuery 合同员工签署后是否展示查询参数
     * @return page
     */
    @ApiOperation(value="分页查询合同员工签署后是否展示")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyContractShowQuery", dataType = "CompanyContractShowQuery", value = "合同员工签署后是否展示查询参数", paramType = "query")
    })
    Result<Page<CompanyContractShowListVO>> page(CompanyContractShowQuery companyContractShowQuery);


    /**
     * 根据合同员工签署后是否展示id查询合同员工签署后是否展示详情
     *
     * @param companyId 公司id
     * @return 合同员工签署后是否展示详情
     */
    @ApiOperation(value = "根据公司id查询小程序合同员工签署后是否默认展示")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyId", dataType = "String", value = "公司id", paramType = "path")
    })
    Result<CompanyContractShowVO> findByCompanyId(String companyId);


    /**
     * 根据合同员工签署后是否展示id查询合同员工签署后是否展示详情
     *
     * @param companyId 公司id
     * @return 合同员工签署后是否展示详情
     */
    @ApiOperation(value = "修改某公司合同员工签署完成后是否默认展示")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyId", dataType = "String", value = "公司id", paramType = "path"),
            @ApiImplicitParam(name = "isShow", dataType = "Boolean", value = "是否展示,true:展示,false:不展示", paramType = "path")
    })
    Result<String> updateCompanyShow(String companyId, Boolean isShow);


}

